#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e6+10;
int n,k;
ll a[N];
ll q[N];
int main(){
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		a[i]+=a[i-1];//预处理 前缀和
	}
	ll rel=0;
	q[0]=1;//加上cnt[0]=1这一句才满足“在L在[0,R-1]之间”（R指右边界，姑且认为是n）
	for(int i=1;i<=n;i++){
		rel+=q[a[i]%k];//先统计 出现当前值求余相同的数
		q[a[i]%k]++;//再累加 储存到q数组中
		}
	printf("%lld\n",rel);
	return 0;	
} 